/*
* Copyright (c) 2025 Shenzhen Kaihong Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

const addon = require('./build/Release/ohmw_js_example');

const mwServer = new addon.MWServer(addon.MWServerType.DORA);

if (!mwServer.isRunning(addon.MWServerType.DORA)) {
    console.error('MWServer is not running');
    process.exit(1);
}

let node = new addon.Node('talker', addon.NodeType.DORA);

async function main() {
    while (true) {
        let data = 'This is a plain text message';
        let success = node.send('data', Buffer.from(data));
        if (!success) {
            console.error('Failed to send data');
            process.exit(1);
        }
    
        let msg = new addon.Message_std_msgs_String();
        msg.data = 'This is a std_msgs::String message';
        success = node.sendMsg('msg', "std_msgs::String", msg);
        if (!success) {
            console.error('Failed to send message');
            process.exit(1);
        }
    
        await new Promise(resolve => setTimeout(resolve, 1000));
    }
}

main();
